# Generated from IDL_Grammar.g4 by ANTLR 4.13.0
# antlr4 (v4.13.0)
# 	- Project: https://github.com/antlr/antlr4
# 	- License: BSD
# 	- Copyright (c) 2012-2022 The ANTLR Project


# Full license texts:
# - BSD License: See LICENSE-ANTLR

from antlr4 import *
from io import StringIO
import sys
if sys.version_info[1] > 5:
    from typing import TextIO
else:
    from typing.io import TextIO


def serializedATN():
    return [
        4,0,74,588,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,
        2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,
        13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,
        19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,
        26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,
        32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,
        39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,
        45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,
        52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,
        58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,
        65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,
        71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,1,0,1,0,1,1,
        1,1,1,2,1,2,1,2,1,3,3,3,164,8,3,1,3,1,3,1,3,5,3,169,8,3,10,3,12,
        3,172,9,3,3,3,174,8,3,1,4,1,4,4,4,178,8,4,11,4,12,4,179,1,5,1,5,
        1,5,4,5,185,8,5,11,5,12,5,186,1,6,3,6,190,8,6,1,6,4,6,193,8,6,11,
        6,12,6,194,1,6,1,6,5,6,199,8,6,10,6,12,6,202,9,6,1,6,1,6,4,6,206,
        8,6,11,6,12,6,207,3,6,210,8,6,1,6,1,6,3,6,214,8,6,1,6,4,6,217,8,
        6,11,6,12,6,218,3,6,221,8,6,1,7,1,7,1,7,5,7,226,8,7,10,7,12,7,229,
        9,7,1,7,1,7,1,8,1,8,1,8,3,8,236,8,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,
        1,9,1,9,1,9,1,9,3,9,249,8,9,1,10,1,10,1,11,1,11,1,12,1,12,1,13,1,
        13,1,14,1,14,1,15,1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,
        20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,24,1,24,1,25,1,25,1,26,1,
        26,1,27,1,27,1,28,1,28,1,29,1,29,1,30,1,30,1,30,1,31,1,31,1,31,1,
        32,1,32,1,33,1,33,1,33,1,34,1,34,1,35,1,35,1,35,1,36,1,36,1,36,1,
        36,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,
        38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,
        40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,
        42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,
        43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,1,44,1,45,1,
        45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,
        47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,
        48,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,
        51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,52,1,52,1,52,1,53,1,
        53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,
        55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,
        57,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,
        60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,
        62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,
        64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,
        65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,
        67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,
        69,1,69,1,69,1,70,1,70,1,70,5,70,537,8,70,10,70,12,70,540,9,70,1,
        71,1,71,1,72,1,72,1,73,4,73,547,8,73,11,73,12,73,548,1,73,1,73,1,
        74,1,74,5,74,555,8,74,10,74,12,74,558,9,74,1,74,1,74,1,74,1,74,1,
        75,1,75,1,75,1,75,5,75,568,8,75,10,75,12,75,571,9,75,1,75,1,75,1,
        75,1,75,1,75,1,76,1,76,1,76,1,76,5,76,582,8,76,10,76,12,76,585,9,
        76,1,76,1,76,1,569,0,77,1,0,3,0,5,0,7,1,9,2,11,3,13,4,15,5,17,6,
        19,7,21,8,23,9,25,10,27,11,29,12,31,13,33,14,35,15,37,16,39,17,41,
        18,43,19,45,20,47,21,49,22,51,23,53,24,55,25,57,26,59,27,61,28,63,
        29,65,30,67,31,69,32,71,33,73,34,75,35,77,36,79,37,81,38,83,39,85,
        40,87,41,89,42,91,43,93,44,95,45,97,46,99,47,101,48,103,49,105,50,
        107,51,109,52,111,53,113,54,115,55,117,56,119,57,121,58,123,59,125,
        60,127,61,129,62,131,63,133,64,135,65,137,66,139,67,141,68,143,69,
        145,70,147,71,149,72,151,73,153,74,1,0,14,1,0,48,57,3,0,48,57,65,
        70,97,102,8,0,34,34,39,39,92,92,98,98,102,102,110,110,114,114,116,
        116,1,0,49,57,1,0,48,55,2,0,88,88,120,120,2,0,43,43,45,45,2,0,69,
        69,101,101,2,0,34,34,92,92,2,0,39,39,92,92,3,0,65,90,95,95,97,122,
        3,0,9,10,12,13,32,32,1,0,10,10,2,0,10,10,13,13,607,0,7,1,0,0,0,0,
        9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,
        19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,
        29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,
        39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,
        49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,
        59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,
        69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,
        79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,
        89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,
        99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,
        0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,
        1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,
        0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,
        0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,
        145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,
        0,0,1,155,1,0,0,0,3,157,1,0,0,0,5,159,1,0,0,0,7,163,1,0,0,0,9,175,
        1,0,0,0,11,181,1,0,0,0,13,189,1,0,0,0,15,222,1,0,0,0,17,232,1,0,
        0,0,19,248,1,0,0,0,21,250,1,0,0,0,23,252,1,0,0,0,25,254,1,0,0,0,
        27,256,1,0,0,0,29,258,1,0,0,0,31,260,1,0,0,0,33,262,1,0,0,0,35,264,
        1,0,0,0,37,266,1,0,0,0,39,268,1,0,0,0,41,270,1,0,0,0,43,272,1,0,
        0,0,45,274,1,0,0,0,47,276,1,0,0,0,49,278,1,0,0,0,51,280,1,0,0,0,
        53,282,1,0,0,0,55,284,1,0,0,0,57,286,1,0,0,0,59,288,1,0,0,0,61,290,
        1,0,0,0,63,293,1,0,0,0,65,296,1,0,0,0,67,298,1,0,0,0,69,301,1,0,
        0,0,71,303,1,0,0,0,73,306,1,0,0,0,75,310,1,0,0,0,77,316,1,0,0,0,
        79,326,1,0,0,0,81,334,1,0,0,0,83,339,1,0,0,0,85,347,1,0,0,0,87,354,
        1,0,0,0,89,366,1,0,0,0,91,373,1,0,0,0,93,380,1,0,0,0,95,385,1,0,
        0,0,97,394,1,0,0,0,99,401,1,0,0,0,101,406,1,0,0,0,103,412,1,0,0,
        0,105,419,1,0,0,0,107,425,1,0,0,0,109,430,1,0,0,0,111,435,1,0,0,
        0,113,441,1,0,0,0,115,447,1,0,0,0,117,453,1,0,0,0,119,458,1,0,0,
        0,121,464,1,0,0,0,123,470,1,0,0,0,125,476,1,0,0,0,127,483,1,0,0,
        0,129,490,1,0,0,0,131,497,1,0,0,0,133,506,1,0,0,0,135,513,1,0,0,
        0,137,519,1,0,0,0,139,527,1,0,0,0,141,533,1,0,0,0,143,541,1,0,0,
        0,145,543,1,0,0,0,147,546,1,0,0,0,149,552,1,0,0,0,151,563,1,0,0,
        0,153,577,1,0,0,0,155,156,7,0,0,0,156,2,1,0,0,0,157,158,7,1,0,0,
        158,4,1,0,0,0,159,160,5,92,0,0,160,161,7,2,0,0,161,6,1,0,0,0,162,
        164,5,45,0,0,163,162,1,0,0,0,163,164,1,0,0,0,164,173,1,0,0,0,165,
        174,5,48,0,0,166,170,7,3,0,0,167,169,3,1,0,0,168,167,1,0,0,0,169,
        172,1,0,0,0,170,168,1,0,0,0,170,171,1,0,0,0,171,174,1,0,0,0,172,
        170,1,0,0,0,173,165,1,0,0,0,173,166,1,0,0,0,174,8,1,0,0,0,175,177,
        5,48,0,0,176,178,7,4,0,0,177,176,1,0,0,0,178,179,1,0,0,0,179,177,
        1,0,0,0,179,180,1,0,0,0,180,10,1,0,0,0,181,182,5,48,0,0,182,184,
        7,5,0,0,183,185,3,3,1,0,184,183,1,0,0,0,185,186,1,0,0,0,186,184,
        1,0,0,0,186,187,1,0,0,0,187,12,1,0,0,0,188,190,7,6,0,0,189,188,1,
        0,0,0,189,190,1,0,0,0,190,209,1,0,0,0,191,193,3,1,0,0,192,191,1,
        0,0,0,193,194,1,0,0,0,194,192,1,0,0,0,194,195,1,0,0,0,195,196,1,
        0,0,0,196,200,5,46,0,0,197,199,3,1,0,0,198,197,1,0,0,0,199,202,1,
        0,0,0,200,198,1,0,0,0,200,201,1,0,0,0,201,210,1,0,0,0,202,200,1,
        0,0,0,203,205,5,46,0,0,204,206,3,1,0,0,205,204,1,0,0,0,206,207,1,
        0,0,0,207,205,1,0,0,0,207,208,1,0,0,0,208,210,1,0,0,0,209,192,1,
        0,0,0,209,203,1,0,0,0,210,220,1,0,0,0,211,213,7,7,0,0,212,214,7,
        6,0,0,213,212,1,0,0,0,213,214,1,0,0,0,214,216,1,0,0,0,215,217,3,
        1,0,0,216,215,1,0,0,0,217,218,1,0,0,0,218,216,1,0,0,0,218,219,1,
        0,0,0,219,221,1,0,0,0,220,211,1,0,0,0,220,221,1,0,0,0,221,14,1,0,
        0,0,222,227,5,34,0,0,223,226,3,5,2,0,224,226,8,8,0,0,225,223,1,0,
        0,0,225,224,1,0,0,0,226,229,1,0,0,0,227,225,1,0,0,0,227,228,1,0,
        0,0,228,230,1,0,0,0,229,227,1,0,0,0,230,231,5,34,0,0,231,16,1,0,
        0,0,232,235,5,39,0,0,233,236,3,5,2,0,234,236,8,9,0,0,235,233,1,0,
        0,0,235,234,1,0,0,0,236,237,1,0,0,0,237,238,5,39,0,0,238,18,1,0,
        0,0,239,240,5,84,0,0,240,241,5,82,0,0,241,242,5,85,0,0,242,249,5,
        69,0,0,243,244,5,70,0,0,244,245,5,65,0,0,245,246,5,76,0,0,246,247,
        5,83,0,0,247,249,5,69,0,0,248,239,1,0,0,0,248,243,1,0,0,0,249,20,
        1,0,0,0,250,251,5,59,0,0,251,22,1,0,0,0,252,253,5,58,0,0,253,24,
        1,0,0,0,254,255,5,44,0,0,255,26,1,0,0,0,256,257,5,123,0,0,257,28,
        1,0,0,0,258,259,5,125,0,0,259,30,1,0,0,0,260,261,5,40,0,0,261,32,
        1,0,0,0,262,263,5,41,0,0,263,34,1,0,0,0,264,265,5,91,0,0,265,36,
        1,0,0,0,266,267,5,93,0,0,267,38,1,0,0,0,268,269,5,60,0,0,269,40,
        1,0,0,0,270,271,5,62,0,0,271,42,1,0,0,0,272,273,5,61,0,0,273,44,
        1,0,0,0,274,275,5,43,0,0,275,46,1,0,0,0,276,277,5,45,0,0,277,48,
        1,0,0,0,278,279,5,42,0,0,279,50,1,0,0,0,280,281,5,47,0,0,281,52,
        1,0,0,0,282,283,5,37,0,0,283,54,1,0,0,0,284,285,5,124,0,0,285,56,
        1,0,0,0,286,287,5,94,0,0,287,58,1,0,0,0,288,289,5,38,0,0,289,60,
        1,0,0,0,290,291,5,60,0,0,291,292,5,60,0,0,292,62,1,0,0,0,293,294,
        5,62,0,0,294,295,5,62,0,0,295,64,1,0,0,0,296,297,5,126,0,0,297,66,
        1,0,0,0,298,299,5,58,0,0,299,300,5,58,0,0,300,68,1,0,0,0,301,302,
        5,64,0,0,302,70,1,0,0,0,303,304,5,105,0,0,304,305,5,110,0,0,305,
        72,1,0,0,0,306,307,5,111,0,0,307,308,5,117,0,0,308,309,5,116,0,0,
        309,74,1,0,0,0,310,311,5,105,0,0,311,312,5,110,0,0,312,313,5,111,
        0,0,313,314,5,117,0,0,314,315,5,116,0,0,315,76,1,0,0,0,316,317,5,
        105,0,0,317,318,5,110,0,0,318,319,5,116,0,0,319,320,5,101,0,0,320,
        321,5,114,0,0,321,322,5,102,0,0,322,323,5,97,0,0,323,324,5,99,0,
        0,324,325,5,101,0,0,325,78,1,0,0,0,326,327,5,116,0,0,327,328,5,121,
        0,0,328,329,5,112,0,0,329,330,5,101,0,0,330,331,5,100,0,0,331,332,
        5,101,0,0,332,333,5,102,0,0,333,80,1,0,0,0,334,335,5,118,0,0,335,
        336,5,111,0,0,336,337,5,105,0,0,337,338,5,100,0,0,338,82,1,0,0,0,
        339,340,5,100,0,0,340,341,5,101,0,0,341,342,5,102,0,0,342,343,5,
        97,0,0,343,344,5,117,0,0,344,345,5,108,0,0,345,346,5,116,0,0,346,
        84,1,0,0,0,347,348,5,109,0,0,348,349,5,111,0,0,349,350,5,100,0,0,
        350,351,5,117,0,0,351,352,5,108,0,0,352,353,5,101,0,0,353,86,1,0,
        0,0,354,355,5,64,0,0,355,356,5,97,0,0,356,357,5,110,0,0,357,358,
        5,110,0,0,358,359,5,111,0,0,359,360,5,116,0,0,360,361,5,97,0,0,361,
        362,5,116,0,0,362,363,5,105,0,0,363,364,5,111,0,0,364,365,5,110,
        0,0,365,88,1,0,0,0,366,367,5,105,0,0,367,368,5,102,0,0,368,369,5,
        110,0,0,369,370,5,100,0,0,370,371,5,101,0,0,371,372,5,102,0,0,372,
        90,1,0,0,0,373,374,5,115,0,0,374,375,5,119,0,0,375,376,5,105,0,0,
        376,377,5,116,0,0,377,378,5,99,0,0,378,379,5,104,0,0,379,92,1,0,
        0,0,380,381,5,99,0,0,381,382,5,97,0,0,382,383,5,115,0,0,383,384,
        5,101,0,0,384,94,1,0,0,0,385,386,5,115,0,0,386,387,5,101,0,0,387,
        388,5,113,0,0,388,389,5,117,0,0,389,390,5,101,0,0,390,391,5,110,
        0,0,391,392,5,99,0,0,392,393,5,101,0,0,393,96,1,0,0,0,394,395,5,
        115,0,0,395,396,5,116,0,0,396,397,5,114,0,0,397,398,5,117,0,0,398,
        399,5,99,0,0,399,400,5,116,0,0,400,98,1,0,0,0,401,402,5,101,0,0,
        402,403,5,110,0,0,403,404,5,117,0,0,404,405,5,109,0,0,405,100,1,
        0,0,0,406,407,5,99,0,0,407,408,5,111,0,0,408,409,5,110,0,0,409,410,
        5,115,0,0,410,411,5,116,0,0,411,102,1,0,0,0,412,413,5,115,0,0,413,
        414,5,116,0,0,414,415,5,114,0,0,415,416,5,105,0,0,416,417,5,110,
        0,0,417,418,5,103,0,0,418,104,1,0,0,0,419,420,5,117,0,0,420,421,
        5,110,0,0,421,422,5,105,0,0,422,423,5,111,0,0,423,424,5,110,0,0,
        424,106,1,0,0,0,425,426,5,99,0,0,426,427,5,104,0,0,427,428,5,97,
        0,0,428,429,5,114,0,0,429,108,1,0,0,0,430,431,5,105,0,0,431,432,
        5,110,0,0,432,433,5,116,0,0,433,434,5,56,0,0,434,110,1,0,0,0,435,
        436,5,105,0,0,436,437,5,110,0,0,437,438,5,116,0,0,438,439,5,49,0,
        0,439,440,5,54,0,0,440,112,1,0,0,0,441,442,5,105,0,0,442,443,5,110,
        0,0,443,444,5,116,0,0,444,445,5,51,0,0,445,446,5,50,0,0,446,114,
        1,0,0,0,447,448,5,105,0,0,448,449,5,110,0,0,449,450,5,116,0,0,450,
        451,5,54,0,0,451,452,5,52,0,0,452,116,1,0,0,0,453,454,5,108,0,0,
        454,455,5,111,0,0,455,456,5,110,0,0,456,457,5,103,0,0,457,118,1,
        0,0,0,458,459,5,111,0,0,459,460,5,99,0,0,460,461,5,116,0,0,461,462,
        5,101,0,0,462,463,5,116,0,0,463,120,1,0,0,0,464,465,5,115,0,0,465,
        466,5,104,0,0,466,467,5,111,0,0,467,468,5,114,0,0,468,469,5,116,
        0,0,469,122,1,0,0,0,470,471,5,117,0,0,471,472,5,105,0,0,472,473,
        5,110,0,0,473,474,5,116,0,0,474,475,5,56,0,0,475,124,1,0,0,0,476,
        477,5,117,0,0,477,478,5,105,0,0,478,479,5,110,0,0,479,480,5,116,
        0,0,480,481,5,49,0,0,481,482,5,54,0,0,482,126,1,0,0,0,483,484,5,
        117,0,0,484,485,5,105,0,0,485,486,5,110,0,0,486,487,5,116,0,0,487,
        488,5,51,0,0,488,489,5,50,0,0,489,128,1,0,0,0,490,491,5,117,0,0,
        491,492,5,105,0,0,492,493,5,110,0,0,493,494,5,116,0,0,494,495,5,
        54,0,0,495,496,5,52,0,0,496,130,1,0,0,0,497,498,5,117,0,0,498,499,
        5,110,0,0,499,500,5,115,0,0,500,501,5,105,0,0,501,502,5,103,0,0,
        502,503,5,110,0,0,503,504,5,101,0,0,504,505,5,100,0,0,505,132,1,
        0,0,0,506,507,5,100,0,0,507,508,5,111,0,0,508,509,5,117,0,0,509,
        510,5,98,0,0,510,511,5,108,0,0,511,512,5,101,0,0,512,134,1,0,0,0,
        513,514,5,102,0,0,514,515,5,108,0,0,515,516,5,111,0,0,516,517,5,
        97,0,0,517,518,5,116,0,0,518,136,1,0,0,0,519,520,5,98,0,0,520,521,
        5,111,0,0,521,522,5,111,0,0,522,523,5,108,0,0,523,524,5,101,0,0,
        524,525,5,97,0,0,525,526,5,110,0,0,526,138,1,0,0,0,527,528,5,119,
        0,0,528,529,5,99,0,0,529,530,5,104,0,0,530,531,5,97,0,0,531,532,
        5,114,0,0,532,140,1,0,0,0,533,538,3,143,71,0,534,537,3,143,71,0,
        535,537,3,145,72,0,536,534,1,0,0,0,536,535,1,0,0,0,537,540,1,0,0,
        0,538,536,1,0,0,0,538,539,1,0,0,0,539,142,1,0,0,0,540,538,1,0,0,
        0,541,542,7,10,0,0,542,144,1,0,0,0,543,544,7,0,0,0,544,146,1,0,0,
        0,545,547,7,11,0,0,546,545,1,0,0,0,547,548,1,0,0,0,548,546,1,0,0,
        0,548,549,1,0,0,0,549,550,1,0,0,0,550,551,6,73,0,0,551,148,1,0,0,
        0,552,556,5,35,0,0,553,555,8,12,0,0,554,553,1,0,0,0,555,558,1,0,
        0,0,556,554,1,0,0,0,556,557,1,0,0,0,557,559,1,0,0,0,558,556,1,0,
        0,0,559,560,5,10,0,0,560,561,1,0,0,0,561,562,6,74,0,0,562,150,1,
        0,0,0,563,564,5,47,0,0,564,565,5,42,0,0,565,569,1,0,0,0,566,568,
        9,0,0,0,567,566,1,0,0,0,568,571,1,0,0,0,569,570,1,0,0,0,569,567,
        1,0,0,0,570,572,1,0,0,0,571,569,1,0,0,0,572,573,5,42,0,0,573,574,
        5,47,0,0,574,575,1,0,0,0,575,576,6,75,0,0,576,152,1,0,0,0,577,578,
        5,47,0,0,578,579,5,47,0,0,579,583,1,0,0,0,580,582,8,13,0,0,581,580,
        1,0,0,0,582,585,1,0,0,0,583,581,1,0,0,0,583,584,1,0,0,0,584,586,
        1,0,0,0,585,583,1,0,0,0,586,587,6,76,0,0,587,154,1,0,0,0,24,0,163,
        170,173,179,186,189,194,200,207,209,213,218,220,225,227,235,248,
        536,538,548,556,569,583,1,0,1,0
    ]

class IDL_GrammarLexer(Lexer):

    atn = ATNDeserializer().deserialize(serializedATN())

    decisionsToDFA = [ DFA(ds, i) for i, ds in enumerate(atn.decisionToState) ]

    INTEGER_LITERAL = 1
    OCTAL_LITERAL = 2
    HEX_LITERAL = 3
    FLOATING_PT_LITERAL = 4
    STRING_LITERAL = 5
    CHARACTER_LITERAL = 6
    BOOLEAN_LITERAL = 7
    SEMICOLON = 8
    COLON = 9
    COMMA = 10
    LEFT_BRACE = 11
    RIGHT_BRACE = 12
    LEFT_BRACKET = 13
    RIGHT_BRACKET = 14
    LEFT_SQUARE_BRACKET = 15
    RIGHT_SQUARE_BRACKET = 16
    LEFT_ANG_BRACKET = 17
    RIGHT_ANG_BRACKET = 18
    EQUAL = 19
    PLUS = 20
    MINUS = 21
    MULT = 22
    DIV = 23
    MOD = 24
    BITWISE_OR = 25
    BITWISE_XOR = 26
    BITWISE_AND = 27
    SHIFT_LEFT = 28
    SHIFT_RIGHT = 29
    BITWISE_NOT = 30
    DOUBLE_COLON = 31
    AT = 32
    KW_IN = 33
    KW_OUT = 34
    KW_INOUT = 35
    KW_INTERFACE = 36
    KW_TYPEDEF = 37
    KW_VOID = 38
    KW_DEFAULT = 39
    KW_MODULE = 40
    KW_AT_ANNOTATION = 41
    KW_IFNDEF = 42
    KW_SWITCH = 43
    KW_CASE = 44
    KW_SEQUENCE = 45
    KW_STRUCT = 46
    KW_ENUM = 47
    KW_CONST = 48
    KW_STRING = 49
    KW_UNION = 50
    CHAR_TYPE = 51
    INT8_TYPE = 52
    INT16_TYPE = 53
    INT32_TYPE = 54
    INT64_TYPE = 55
    LONG_TYPE = 56
    OCTET_TYPE = 57
    SHORT_TYPE = 58
    UINT8_TYPE = 59
    UINT16_TYPE = 60
    UINT32_TYPE = 61
    UINT64_TYPE = 62
    UNSIGNED_TYPE = 63
    DOUBLE_TYPE = 64
    FLOAT_TYPE = 65
    KW_BOOLEAN = 66
    WCHAR_TYPE = 67
    ID = 68
    LETTER = 69
    ID_DIGIT = 70
    WS = 71
    PREPROC_DIRECTIVE = 72
    COMMENT = 73
    LINE_COMMENT = 74

    channelNames = [ u"DEFAULT_TOKEN_CHANNEL", u"HIDDEN" ]

    modeNames = [ "DEFAULT_MODE" ]

    literalNames = [ "<INVALID>",
            "';'", "':'", "','", "'{'", "'}'", "'('", "')'", "'['", "']'", 
            "'<'", "'>'", "'='", "'+'", "'-'", "'*'", "'/'", "'%'", "'|'", 
            "'^'", "'&'", "'<<'", "'>>'", "'~'", "'::'", "'@'", "'in'", 
            "'out'", "'inout'", "'interface'", "'typedef'", "'void'", "'default'", 
            "'module'", "'@annotation'", "'ifndef'", "'switch'", "'case'", 
            "'sequence'", "'struct'", "'enum'", "'const'", "'string'", "'union'", 
            "'char'", "'int8'", "'int16'", "'int32'", "'int64'", "'long'", 
            "'octet'", "'short'", "'uint8'", "'uint16'", "'uint32'", "'uint64'", 
            "'unsigned'", "'double'", "'float'", "'boolean'", "'wchar'" ]

    symbolicNames = [ "<INVALID>",
            "INTEGER_LITERAL", "OCTAL_LITERAL", "HEX_LITERAL", "FLOATING_PT_LITERAL", 
            "STRING_LITERAL", "CHARACTER_LITERAL", "BOOLEAN_LITERAL", "SEMICOLON", 
            "COLON", "COMMA", "LEFT_BRACE", "RIGHT_BRACE", "LEFT_BRACKET", 
            "RIGHT_BRACKET", "LEFT_SQUARE_BRACKET", "RIGHT_SQUARE_BRACKET", 
            "LEFT_ANG_BRACKET", "RIGHT_ANG_BRACKET", "EQUAL", "PLUS", "MINUS", 
            "MULT", "DIV", "MOD", "BITWISE_OR", "BITWISE_XOR", "BITWISE_AND", 
            "SHIFT_LEFT", "SHIFT_RIGHT", "BITWISE_NOT", "DOUBLE_COLON", 
            "AT", "KW_IN", "KW_OUT", "KW_INOUT", "KW_INTERFACE", "KW_TYPEDEF", 
            "KW_VOID", "KW_DEFAULT", "KW_MODULE", "KW_AT_ANNOTATION", "KW_IFNDEF", 
            "KW_SWITCH", "KW_CASE", "KW_SEQUENCE", "KW_STRUCT", "KW_ENUM", 
            "KW_CONST", "KW_STRING", "KW_UNION", "CHAR_TYPE", "INT8_TYPE", 
            "INT16_TYPE", "INT32_TYPE", "INT64_TYPE", "LONG_TYPE", "OCTET_TYPE", 
            "SHORT_TYPE", "UINT8_TYPE", "UINT16_TYPE", "UINT32_TYPE", "UINT64_TYPE", 
            "UNSIGNED_TYPE", "DOUBLE_TYPE", "FLOAT_TYPE", "KW_BOOLEAN", 
            "WCHAR_TYPE", "ID", "LETTER", "ID_DIGIT", "WS", "PREPROC_DIRECTIVE", 
            "COMMENT", "LINE_COMMENT" ]

    ruleNames = [ "DIGIT", "HEX_DIGIT", "ESCAPE_SEQUENCE", "INTEGER_LITERAL", 
                  "OCTAL_LITERAL", "HEX_LITERAL", "FLOATING_PT_LITERAL", 
                  "STRING_LITERAL", "CHARACTER_LITERAL", "BOOLEAN_LITERAL", 
                  "SEMICOLON", "COLON", "COMMA", "LEFT_BRACE", "RIGHT_BRACE", 
                  "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_SQUARE_BRACKET", 
                  "RIGHT_SQUARE_BRACKET", "LEFT_ANG_BRACKET", "RIGHT_ANG_BRACKET", 
                  "EQUAL", "PLUS", "MINUS", "MULT", "DIV", "MOD", "BITWISE_OR", 
                  "BITWISE_XOR", "BITWISE_AND", "SHIFT_LEFT", "SHIFT_RIGHT", 
                  "BITWISE_NOT", "DOUBLE_COLON", "AT", "KW_IN", "KW_OUT", 
                  "KW_INOUT", "KW_INTERFACE", "KW_TYPEDEF", "KW_VOID", "KW_DEFAULT", 
                  "KW_MODULE", "KW_AT_ANNOTATION", "KW_IFNDEF", "KW_SWITCH", 
                  "KW_CASE", "KW_SEQUENCE", "KW_STRUCT", "KW_ENUM", "KW_CONST", 
                  "KW_STRING", "KW_UNION", "CHAR_TYPE", "INT8_TYPE", "INT16_TYPE", 
                  "INT32_TYPE", "INT64_TYPE", "LONG_TYPE", "OCTET_TYPE", 
                  "SHORT_TYPE", "UINT8_TYPE", "UINT16_TYPE", "UINT32_TYPE", 
                  "UINT64_TYPE", "UNSIGNED_TYPE", "DOUBLE_TYPE", "FLOAT_TYPE", 
                  "KW_BOOLEAN", "WCHAR_TYPE", "ID", "LETTER", "ID_DIGIT", 
                  "WS", "PREPROC_DIRECTIVE", "COMMENT", "LINE_COMMENT" ]

    grammarFileName = "IDL_Grammar.g4"

    def __init__(self, input=None, output:TextIO = sys.stdout):
        super().__init__(input, output)
        self.checkVersion("4.13.0")
        self._interp = LexerATNSimulator(self, self.atn, self.decisionsToDFA, PredictionContextCache())
        self._actions = None
        self._predicates = None


